<!DOCTYPE html>
<!--[if lte IE 8 ]>
<html class="ie" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<![endif]-->
<!--[if (gte IE 9)|!(IE)]><!-->
<!--
***************  *      *     *
      8          *    *       *
      8          *  *         *
      8          **           *
      8          *  *         *
      8          *    *       *
      8          *      *     *
      8          *        *   ***********    -----Theme By Kieran(http://go.kieran.top)
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<!--<![endif]-->

<head>
  <title>ThoughtWorks Reading radar | jack&#39;s blogs</title>
  <!-- Meta data -->
    <meta http-equiv="Content-Type" content="text/html" charset="UTF-8" >
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="generator" content="jack's blogs">
    <meta name="author" content="Jack fan">
    <meta name="description" content="write something" />
    <meta name="keywords" content="jack's blogs" />

    <!-- Favicon, (keep icon in root folder) -->
    <link rel="Shortcut Icon" href="/img/favicon.ico" type="image/ico">

    <link rel="alternate" href="/atom.xml" title="jack&#39;s blogs" type="application/atom+xml">
    <link rel="stylesheet" href="/css/all.css" media="screen" type="text/css">
    
    <link rel="stylesheet" href="/highlightjs/vs.css" type="text/css">
    

    <!--[if IE 8]>
    <link rel="stylesheet" type="text/css" href="/css/ie8.css" />
    <![endif]-->

    <!-- jQuery | Load our jQuery, with an alternative source fallback to a local version if request is unavailable -->
    <script src="/js/jquery-1.11.1.min.js"></script>
    <script>window.jQuery || document.write('<script src="js/jquery-1.11.1.min.js"><\/script>')</script>

    <!-- Load these in the <head> for quicker IE8+ load times -->
    <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
    <script src="/js/html5shiv.min.js"></script>
    <script src="/js/respond.min.js"></script>
    <![endif]-->

  
  
  

  <style>.col-md-8.col-md-offset-2.opening-statement img{display:none;}</style>
</head>

<!--
<body class="post-template">
-->
<body id="index" class="lightnav animsition">

      <!-- ============================ Off-canvas navigation =========================== -->

    <div class="sb-slidebar sb-right sb-style-overlay sb-momentum-scrolling">
        <div class="sb-close" aria-label="Close Menu" aria-hidden="true">
            <img src="/img/close.png" alt="Close"/>
        </div>
        <!-- Lists in Slidebars -->
        <ul class="sb-menu">
            <li><a href="/" class="animsition-link" title="Home">Home</a></li>
            <li><a href="/archives" class="animsition-link" title="archive">archives</a></li>
            <!-- Dropdown Menu -->
			 
            <li>
                <a class="sb-toggle-submenu">Works<span class="sb-caret"></span></a>
                <ul class="sb-submenu">
                    
                        <li><a href="/tags/hexo" target="_BLANK" class="animsition-link">hexo</a></li>
                    
                        <li><a href="/tags/git" target="_BLANK" class="animsition-link">git</a></li>
                    
                </ul>
            </li>
            
            
        	<li>
        		<a class="sb-toggle-submenu">Categories<span class="sb-caret"></span></a>
            	<ul class="sb-submenu">
				  	
				    <li><a href="/categories/Reading/" class="animsition-link">Reading<small>(1)</small></a></li>
				    
				    <li><a href="/categories/git/" class="animsition-link">git<small>(1)</small></a></li>
				    
				    <li><a href="/categories/hexo/" class="animsition-link">hexo<small>(2)</small></a></li>
				    
				    <li><a href="/categories/linux/" class="animsition-link">linux<small>(1)</small></a></li>
				    
				    <li><a href="/categories/sql/" class="animsition-link">sql<small>(1)</small></a></li>
				    
				</ul>
        	</li>
			
            
            <li>
                <a class="sb-toggle-submenu">Links<span class="sb-caret"></span></a>
                <ul class="sb-submenu">
                    
                    <li><a href="http://go.kieran.top/" class="animsition-link">Kieran</a></li>
                    
                    <li><a href="http://domain.com/" class="animsition-link">Name</a></li>
                    
                </ul>
            </li>
            
        </ul>
        <!-- Lists in Slidebars -->
        <ul class="sb-menu secondary">
            <li><a href="/about.html" class="animsition-link" title="about">About</a></li>
            <li><a href="/atom.xml" class="animsition-link" title="rss">RSS</a></li>
        </ul>
    </div>
    
    <!-- ============================ END Off-canvas navigation =========================== -->

    <!-- ============================ #sb-site Main Page Wrapper =========================== -->

    <div id="sb-site">
        <!-- #sb-site - All page content should be contained within this id, except the off-canvas navigation itself -->

        <!-- ============================ Header & Logo bar =========================== -->

        <div id="navigation" class="navbar navbar-fixed-top">
            <div class="navbar-inner">
                <div class="container">
                    <!-- Nav logo -->
                    <div class="logo">
                        <a href="/" title="Logo" class="animsition-link">
                         <img src="/img/logo.png" alt="Logo" width="35px;"/> 
                        </a>
                    </div>
                    <!-- // Nav logo -->
                    <!-- Info-bar -->
                    <nav>
                        <ul class="nav">
                            <li><a href="/" class="animsition-link">jack's blogs</a></li>
                            <li class="nolink"><span>Always </span>Creative.</li>
                            
                            <li><a href="https://github.com/fanyangyang" title="Github" target="_blank"><i class="icon-github"></i></a></li>
                            
                            
                            
                            
                            
                            <li class="nolink"><span>Welcome!</span></li>
                        </ul>
                    </nav>
                    <!--// Info-bar -->
                </div>
                <!-- // .container -->
                <div class="learnmore sb-toggle-right">More</div>
                <button type="button" class="navbar-toggle menu-icon sb-toggle-right" title="More">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar before"></span>
                <span class="icon-bar main"></span>
                <span class="icon-bar after"></span>
                </button>
            </div>
            <!-- // .navbar-inner -->
        </div>

        <!-- ============================ Header & Logo bar =========================== -->


      
<section id="intro">
    <div class="container">
        <div class="row col-md-offset-2">
            <div class="col-md-8">
    			<span class="post-meta">
      <time datetime="2017-11-30T02:24:59.000Z" itemprop="datePublished">
          2017-11-30
      </time>
    
    
    | 
    <a href='/tags/Reading/'>Reading</a>,
    
    <a href='/tags/coder/'>coder</a>,
    
    <a href='/tags/ThoughtWorks/'>ThoughtWorks</a>
    
    
</span>
                 | 阅读数:
                    <span id="/ThoughtWorks-Reading-radar.html" class="leancloud_visitors" data-flag-title="ThoughtWorks Reading radar"></span>
                
                <h1>ThoughtWorks Reading radar</h1>
            </div>
        </div>
        <div class="col-md-8 col-md-offset-2">
      		<blockquote>
<p>摘自：<a href="http://agiledon.github.io/blog/2013/04/17/thoughtworks-developer-reading-radar/" target="_blank" rel="external">http://agiledon.github.io/blog/2013/04/17/thoughtworks-developer-reading-radar/</a></p>
</blockquote>
<p><img src="/img/reading-radar.jpg" alt="Reading-radar"></p>
<p>软件业的特点是变化。若要提高软件开发的技能，就必须跟上技术发展的步伐。埋首醉心于项目开发与实战，固然能够锤炼自己的开发技巧，却难免受限于经验与学识。世界上并不存在速成的终南捷径，但阅读好的技术书籍，尤其是阅读大师们的经典著作，总能收到事半功倍之效。一位优秀的程序员，或许就是一名好的阅读者。好的阅读者，总是知道如何选择好的书籍。书海浩繁，良莠不齐。阅读技术好书，如与智者交谈，“与君一席话胜读十年书”；遭遇技术烂书，如被拐卖，“少小离家老大回，乡音无改鬓毛衰”。</p>
<p>ThoughtWorks作为一家学习型组织，颇为看重每一位员工的学习能力。事实上，大多数ThoughtWorker的骨子里，都溢满了读书的基因。与书相伴，与书为伍，既是一种乐趣，又是一种习惯。当习惯成为自然时，书籍就成为生活和工作不可或缺的一部分了。如果说人文历史哲学等书籍是一碗心灵鸡汤，技术书籍大抵算得上是一味营养素，读之可以直接带来养分；可若是不了解自己究竟缺了哪一种营养，乱吃乱补，结果就可能适得其反了。有鉴于此，我和同事刘龙军结合自身的阅读经验，为新入职ThoughtWorks的程序员制作了一份读书路线图。我们将范围明确为程序员，是因为作为程序员的我们，它是我们最了解的工作角色。我们筛选出了一些大家公认的经典书籍，再结合自己的阅读体会，并广泛征集了更多ThoughtWorker的意见，包括徐昊，熊节，郑晔等资深阅读者，得到了这样一份草稿。在中国公司内部推出时，这份读书路线图得到了多数人的认可和欢迎。继而，我们在成都办公室陆续针对此读书路线图展开了读书俱乐部的活动，算是做了一次全方位大面积的试水。</p>
<p>现在，我们觉得是推出正式版本，并面向更多受众的时机了。这就是大家现在看到的ThoughtWorks(中国)程序员读书雷达。它相较于之前的读书路线图草稿，分类更为专业，书籍筛选更为合理，并以雷达独有的优势，来展现不同的阅读维度与阅读深度。显然，读书雷达更能表达我们对所选书籍的深度认识。它可以作为学习型组织的一份知识输入，每一位程序员都可以根据自身水平与能力，选择适合自己的书籍，甚至组成一份表达阅读履历的读书路线图，在获得知识完善与汲取的过程中，提高自身能力，达至各个维度的巅峰。</p>
<p>该读书雷达将书籍分为了如下四个象限：</p>
<blockquote>
<p>Coding Practice（编程实践）<br>Architecture &amp; Design（架构与设计）<br>Methodology（方法学）<br>Thought &amp; Leadership（思想与领导力）</p>
</blockquote>
<p>我们之所以将方法学、思想与领导力放入到这个为程序员设计的读书雷达中，乃是因为软件开发不仅仅是个人的活动，也不仅仅是编码技巧和设计能力的体现。我们认为，开发技能其实是一项综合的系统工程。了解方法学，可以促进你对开发过程的理解；关于思想，则涉及大脑思维的修炼，可以提高程序员的抽象能力、学习能力，有助于帮助程序员发现事物发展的规律和本质；至于领导力，则有助于程序员在开发团队中发挥更大的作用，并能作为很好的团队成员，提升团队的整体能力。我们没有在这个读书雷达中包括语言类的书籍，原因在于这类书籍太过于发散，且更新较快；我们也不可能奢望在一张读书雷达图中，为不同的语言平台展现不同的优秀书籍。相比较语言的学习，我们更看重程序员在编程实践上的基本功。</p>
<p>每个象限皆分为三个等级，分别为Fundamental、Medium和Advanced，对应初学、进阶和高级。在雷达图中，读者可以根据该书在图中距离圆心的远近，判断它的难度级别。我们还使用了不同的图示来表达对每本书的倾向性意见，其中，橙色的三角形图示代表“强烈推荐”，蓝色的圆形图示代表“推荐”。我们希望这类书籍对于程序员而言，可以根据自己目前的水平，选择适合自己的书籍。在这个层次上，强烈推荐可能就意味着必读。</p>
<p>或许有人会质疑读书雷达的挑选标准。正所谓“每个人心中都有自己的哈姆雷特”，我们认同的未必能得到读者的认同，这是我们这个世界关于一种观点或态度的常态。我们发布这个读书雷达，只是希望能提供更多有用的信息与参考，而非代表一种读书权利的绝对化。事实上，我们也不可能做到。此外，”吾生也有涯，而知也无涯”，我们阅读的书籍毕竟有限，且读书雷达的容量也有限，难免会有遗珠之叹，这也是一件无可奈何之事。然而，我们欢迎更多的批评与建议，或许你推荐的好书恰恰是我们遗忘的，又或者激起了我们的共识，那么我们也会毫不吝啬地更新读书雷达，以求做到我们能力范围内的尽善尽美。当然，正如你看到的，我们在Methodology（方法学）象限，更多地推荐了与敏捷和精益相关的书籍。这是因为我们对敏捷技能与方法更有心得和信心。对于我和刘龙军还不够擅长的领域，我们不敢也不愿做出可能误导人的推荐。</p>
<p>本读书雷达虽然冠以ThoughtWorks（中国）之名，但选书的倾向与意见并非ThoughtWorks（中国）官方的态度，而是作为制作者（龙军和我）个人表达的意见而已。如果你也加入了ThoughtWorks，你一定会发现这种自发组织的民间活动，在ThoughtWorks可谓俯拾皆是，不用诧异。</p>
<p>我将在后面的文章中，根据每个象限为每一本书给出我们的推荐理由。此时，书籍成为了我们的臣民，我想对这个王国做一次不吝惜赞赏的巡视。最后，列出读书雷达的中英文书单，如下所示(感谢凯峰为这个雷达图建立的豆列，可以访问<a href="https://www.douban.com/doulist/2012097/" target="_blank" rel="external">ThoughtWorks(中国)程序员读书雷达)</a>：</p>
<h2 id="Coding-Practice-编程实践"><a href="#Coding-Practice-编程实践" class="headerlink" title="Coding Practice | 编程实践"></a>Coding Practice | 编程实践</h2><h4 id="基础篇"><a href="#基础篇" class="headerlink" title="基础篇"></a>基础篇</h4><blockquote>
<p>Clean Code《代码整洁之道》<br>Pragmatic Unit Testing《单元测试之道》<br>The Productive Programmer《卓有成效的程序员》<br>Test-Driven Development By Example《测试驱动开发》<br>Clean Coder《程序员的职业修养》<br>The Art of Readable Code《编写可读代码的艺术》</p>
</blockquote>
<h4 id="进阶篇"><a href="#进阶篇" class="headerlink" title="进阶篇"></a>进阶篇</h4><blockquote>
<p>Refactoring To Patterns《重构与模式》<br>Implementation Patterns《实现模式》<br>Code Complete《代码大全》<br>The Pragmatic Programmer《程序员修炼之道》</p>
</blockquote>
<h4 id="高级篇"><a href="#高级篇" class="headerlink" title="高级篇"></a>高级篇</h4><blockquote>
<p>Structure and Interpretation of Computer Programs《计算机程序的构造和解释》<br>Working Effectively with Legacy Code《修改代码的艺术》</p>
</blockquote>
<h2 id="Architecture-amp-Design-架构与设计"><a href="#Architecture-amp-Design-架构与设计" class="headerlink" title="Architecture &amp; Design | 架构与设计"></a>Architecture &amp; Design | 架构与设计</h2><h4 id="基础篇-1"><a href="#基础篇-1" class="headerlink" title="基础篇"></a>基础篇</h4><blockquote>
<p>Agile Software Development 《敏捷软件开发：原则、实践与模式》<br>Head First Design Patterns《深入浅出设计模式》<br>Design Patterns 《设计模式》</p>
</blockquote>
<h4 id="进阶篇-1"><a href="#进阶篇-1" class="headerlink" title="进阶篇"></a>进阶篇</h4><blockquote>
<p>The Art of UNIX Programming 《Unix编程艺术》<br>Practical API Design 《框架设计的艺术》<br>Domain Specific Languages 《领域特定语言》<br>Patterns of Enterprise Application Architecture 《企业应用架构模式》</p>
</blockquote>
<h4 id="高级篇-1"><a href="#高级篇-1" class="headerlink" title="高级篇"></a>高级篇</h4><blockquote>
<p>Release It<br>Domain-Driven Design 《领域驱动设计》<br>Enterprise Integration Patterns《企业集成模式》<br>Beautiful Architecture《架构之美》<br>Pattern-Oriented Software Architecture《面向模式的软件架构》</p>
</blockquote>
<h2 id="Methodology-方法学"><a href="#Methodology-方法学" class="headerlink" title="Methodology | 方法学"></a>Methodology | 方法学</h2><h4 id="基础篇-2"><a href="#基础篇-2" class="headerlink" title="基础篇"></a>基础篇</h4><blockquote>
<p>User Stories Applied《用户故事与敏捷方法》<br>The Gold Mine《金矿》<br>Scrum and XP From the Trenches《硝烟中的Scrum和XP》<br>Continuous Integration《持续集成》<br>Extreme Programming Explained《解析极限编程》</p>
</blockquote>
<h4 id="进阶篇-2"><a href="#进阶篇-2" class="headerlink" title="进阶篇"></a>进阶篇</h4><blockquote>
<p>Lean Thinking《精益思想》<br>Continuous Delivery《持续交付》<br>How Google Tests Software<br>Agile Testing<br>Extreme Programming Refactored《重构极限编程》</p>
</blockquote>
<h4 id="高级篇-2"><a href="#高级篇-2" class="headerlink" title="高级篇"></a>高级篇</h4><blockquote>
<p>Specification By Example</p>
</blockquote>
<h2 id="Thought-amp-Leadership-思想与领导力"><a href="#Thought-amp-Leadership-思想与领导力" class="headerlink" title="Thought &amp; Leadership | 思想与领导力"></a>Thought &amp; Leadership | 思想与领导力</h2><h4 id="基础篇-3"><a href="#基础篇-3" class="headerlink" title="基础篇"></a>基础篇</h4><blockquote>
<p>The Effective Executive《卓有成效的管理者》<br>Are Your Lights On?《你的灯亮着吗》<br>Becoming A Technical Leader《成为技术领导者》</p>
</blockquote>
<h4 id="进阶篇-3"><a href="#进阶篇-3" class="headerlink" title="进阶篇"></a>进阶篇</h4><blockquote>
<p>The Fifth Discipline《第五项修炼》<br>The Design Of Business<br>Management 3.0《管理3.0：培养和提升敏捷领导力》<br>Presentation To Win<br>The McKinsey Way《麦肯锡方法》</p>
</blockquote>
<h4 id="高级篇-3"><a href="#高级篇-3" class="headerlink" title="高级篇"></a>高级篇</h4><blockquote>
<p>Thinking, Fast and Slow《思考快与慢》</p>
</blockquote>

            <div class="clearfix"></div>
            <hr class="nogutter">
        </div>
        <nav class="pagination" role="pagination">
    
    
    <a class="pull-right" href="/better-sql-query.html">
        better sql query →
    </a>
    
</nav>

        <div class="duoshuo">




</div>
    </div>
</section>


      
<!-- ============================ Footer =========================== -->

<footer>
    <div class="container">
            <div class="copy">
                <p>
                    &copy; 2014<script>new Date().getFullYear()>2010&&document.write("-"+new Date().getFullYear());</script>, Content By Jack fan. All Rights Reserved.
                </p>
                <p>Theme By <a href="//go.kieran.top" style="color: #767D84">Kieran</a></p>
            </div>
            <div class="social">
                <ul>
                    
                    <li><a href="https://github.com/fanyangyang" title="Github" target="_blank"><i class="icon-github"></i></a>&nbsp;</li>
                    
                    
                    
                    
                    
                </ul>
            </div>
            <div class="clearfix"> </div>
        </div>
</footer>

<!-- ============================ END Footer =========================== -->
<script src="//cdn1.lncld.net/static/js/2.5.0/av-min.js"></script>
<script>
    var APP_ID = '6q2JbQpr6Q4zmzFzG74kS1kA-gzGzoHsz';
    var APP_KEY = '0G5Hg5OUFcKLlGy5v1EiBArs';
    AV.init({
        appId: APP_ID,
        appKey: APP_KEY
    });
    // 显示次数
    function showTime(Counter) {
        var query = new AV.Query("Counter");
        if($(".leancloud_visitors").length > 0){
            var url = $(".leancloud_visitors").attr('id').trim();
            // where field
            query.equalTo("words", url);
            // count 
            query.count().then(function (number) {
                // There are number instances of MyClass where words equals url.
                $(document.getElementById(url)).text(number?  number : '--');
            }, function (error) {
                // error is an instance of AVError.
            });
        }
    }
   // 追加pv
    function addCount(Counter) {
        var url = $(".leancloud_visitors").length > 0 ? $(".leancloud_visitors").attr('id').trim() : 'icafebolger.com';
        var Counter = AV.Object.extend("Counter");
        var query = new Counter;
        query.save({
            words: url
        }).then(function (object) {
        })
    }
    $(function () {
        var Counter = AV.Object.extend("Counter");
        addCount(Counter);
        showTime(Counter);
    });
</script>
      <!-- Load our scripts -->
<!-- Resizable 'on-demand' full-height hero -->
<script type="text/javascript">
    var resizeHero = function () {
        var hero = $(".cover,.heightblock"),
            window1 = $(window);
        hero.css({
            "height": window1.height()
        });
    };

    resizeHero();

    $(window).resize(function () {
        resizeHero();
    });
</script>
<script src="/js/plugins.min.js"></script><!-- Bootstrap core and concatenated plugins always load here -->
<script src="/js/jquery.flexslider-min.js"></script><!-- Flexslider plugin -->
<script src="/js/scripts.js"></script><!-- Theme scripts -->


<link rel="stylesheet" href="/fancybox/jquery.fancybox.css" media="screen" type="text/css">
<script src="/fancybox/jquery.fancybox.pack.js"></script>
<script type="text/javascript">
$('#intro').find('img').each(function(){
  var alt = this.alt;

  if (alt){
    $(this).after('<span class="caption" style="display:none">' + alt + '</span>');
  }

  $(this).wrap('<a href="' + this.src + '" title="' + alt + '" class="fancybox" rel="gallery" />');
});
(function($){
  $('.fancybox').fancybox();
})(jQuery);
</script>

<!-- Initiate flexslider plugin -->
<script type="text/javascript">
    $(document).ready(function($) {
      (function(){
        console.log('font');
        var getCss = function(path) {
          var head = document.getElementsByTagName('head')[0];
          link = document.createElement('link');
          link.href = path;
          link.rel = 'stylesheet';
          link.type = 'text/css';
          head.appendChild(link);
        };
        getCss('https://fonts.googleapis.com/css?family=Montserrat:400,700');
        getCss('https://fonts.googleapis.com/css?family=Open+Sans:400,600');
      })();
      $('.flexslider').flexslider({
        animation: "fade",
        prevText: "",
        nextText: "",
        directionNav: true
      });
    });
</script>

</body>
</html>
